package com.tangsm.spring.boot.api.enums;

import com.tangsm.spring.boot.api.base.IResultCode;

/**
 * 响应状态码枚举
 *
 * @author tangsm
 */
public enum ResultCode implements IResultCode {
    /**
     * 操作成功
     */
    SUCCESS(200, "操作成功"),

    /**
     * 业务异常
     */
    FAILURE(400, "业务异常"),

    /**
     * 参数错误
     */
    PARAM_ERROR(401, "参数错误，{0}"),

    /**
     * 服务未找到
     */
    NOT_FOUND(404, "服务未找到"),

    /**
     * 服务异常
     */
    ERROR(500, "服务异常"),

    /**
     * 服务不可用
     */
    SERVICE_UNAVAILABLE(503, "服务不可用");

    ResultCode(int code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    /**
     * 状态码
     */
    private final int code;

    /**
     * 消息内容
     * <p>支持{0},{1}...{*}占位符</p>
     */
    private final String msg;

    /**
     * 返回码
     *
     * @return 状态码
     */
    @Override
    public int getCode() {
        return this.code;
    }

    /**
     * 返回消息
     *
     * @return 消息内容
     */
    @Override
    public String getMsg() {
        return this.msg;
    }
}
